package homeword;
import java.util.Scanner;

/**
 * 阿拉伯数字转罗马数字转换器
 * 
 * 功能说明：
 * 1. 接收用户输入的阿拉伯数字字符串
 * 2. 将每个数字转换为对应的罗马数字
 * 3. 支持的数字范围：1-9
 * 
 * 转换规则：
 * - I   表示 1
 * - II  表示 2
 * - III 表示 3
 * - IV  表示 4
 * - V   表示 5
 * - VI  表示 6
 * - VII 表示 7
 * - VIII表示 8
 * - IX  表示 9
 * 
 * 注意事项：
 * 1. 输入长度必须小于等于9
 * 2. 只接受1-9的数字输入
 * 3. 罗马数字系统中没有0的表示
 * 
 * @version 2.0
 * @author Your Name
 * @date 2025-08-20
 */
public class conversionRomanNumber {
    /**
     * 程序入口点
     * 处理用户输入并进行数字转换
     */
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        try {
            System.out.println("请输入一个数字（1-9）：");
            String str = sc.next();
            
            if (isValidInput(str)) {
                System.out.println("正在转换为罗马数字...");
                // 逐字符转换并输出
                for (int i = 0; i < str.length(); i++) {
                    int index = str.charAt(i) - '0';
                    String roman = getRoman(index);
                    System.out.print(roman + " ");
                }
                System.out.println(); // 换行美化输出
            } else {
                System.out.println("输入格式错误！请确保：");
                System.out.println("1. 输入长度小于等于9");
                System.out.println("2. 只包含1-9的数字");
            }
        } finally {
            sc.close(); // 确保Scanner被正确关闭
        }
    }

    /**
     * 验证输入是否符合要求
     * @param str 输入的字符串
     * @return 如果输入有效返回true，否则返回false
     */
    public static boolean isValidInput(String str) {
        // 检查是否为空或长度是否合适
        if (str == null || str.isEmpty() || str.length() > 9) {
            return false;
        }

        // 检查每个字符是否是1-9的数字
        for (int i = 0; i < str.length(); i++) {
            int digit = str.charAt(i) - '0';
            if (digit < 1 || digit > 9) {
                return false;
            }
        }
        return true;
    }

    /**
     * 将数字转换为罗马数字
     * @param num 要转换的数字（1-9）
     * @return 对应的罗马数字表示
     */
    public static String getRoman(int num) {
        // 使用查表法，提高转换效率
        String[] romanNumerals = {
            "", "I", "II", "III", "IV", 
            "V", "VI", "VII", "VIII", "IX"
        };
        return romanNumerals[num];
    }
}
